import mitt from "mitt";

const emitter = mitt();

/**
 * @description: 自定义触发器
 * @param {*} eventName 名称
 */
const $emit = (eventName: string, params = {}) => {
    emitter.emit(eventName, params);
};

/**
 * @description: 自定义接收器
 * @param {*} eventName 名称
 * @param {*} callback 回调的函数
 */
const $on = (eventName: string, callback: (params: any) => void) => {
    emitter.on(eventName, (params: any) => callback(params));
};
/**
 * @description: 清除指定命令
 */
const $off = (eventName: string) => {
    emitter.off(eventName);
};

const clear = () => {
    emitter.all.clear();
};

export const $Mitt = (function () {
    // 销毁的事件
    // onUnmounted(() => {
    //     // 清空所有的事件，避免多组件互相清理
    //     emitter.all.clear()
    // })

    return {
        $emit,
        $on,
        $off,
        clear,
        emitter,
    };
})();
